import { defineConfig, UserConfigExport } from '@tarojs/cli'

import devConfig from './dev'
import prodConfig from './prod'
// eslint-disable-next-line import/first
import { resolve } from 'path'

// https://taro-docs.jd.com/docs/next/config#defineconfig-辅助函数
// eslint-disable-next-line no-unused-vars
export default defineConfig(async (merge, { command, mode }) => {
	/**
	 * @type {UserConfigExport}
	 */
	const baseConfig = {
		alias: {
			'@': resolve(__dirname, '../src'),
		},
		projectName: 'gaga-notebook',
		date: '2024-4-18',
		designWidth: 750,
		deviceRatio: {
			640: 2.34 / 2,
			750: 1,
			375: 2,
			828: 1.81 / 2,
		},
		sourceRoot: 'src',
		outputRoot: 'dist',
		plugins: [],
		defineConstants: {},
		copy: {
			patterns: [
				{
					from: 'cloudfunctions/',
					to: 'dist/cloudfunctions/',
					ignore: ['**/package-lock.json', '**/node_modules/**'],
				},
			],
			options: {},
		},
		framework: 'react',
		compiler: 'webpack5',
		cache: {
			enable: false, // Webpack 持久化缓存配置，建议开启。默认配置请参考：https://docs.taro.zone/docs/config-detail#cache
		},
		mini: {
			postcss: {
				pxtransform: {
					enable: true,
					config: {},
				},
				url: {
					enable: true,
					config: {
						limit: 1024, // 设定转换尺寸上限
					},
				},
				cssModules: {
					enable: false, // 默认为 false，如需使用 css modules 功能，则设为 true
					config: {
						namingPattern: 'module', // 转换模式，取值为 global/module
						generateScopedName: '[name]__[local]___[hash:base64:5]',
					},
				},
			},
		},
		h5: {
			publicPath: '/',
			staticDirectory: 'static',
			output: {
				filename: 'js/[name].[hash:8].js',
				chunkFilename: 'js/[name].[chunkhash:8].js',
			},
			miniCssExtractPluginOption: {
				ignoreOrder: true,
				filename: 'css/[name].[hash].css',
				chunkFilename: 'css/[name].[chunkhash].css',
			},
			postcss: {
				autoprefixer: {
					enable: true,
					config: {},
				},
				cssModules: {
					enable: false, // 默认为 false，如需使用 css modules 功能，则设为 true
					config: {
						namingPattern: 'module', // 转换模式，取值为 global/module
						generateScopedName: '[name]__[local]___[hash:base64:5]',
					},
				},
			},
		},
		rn: {
			appName: 'taroDemo',
			postcss: {
				cssModules: {
					enable: false, // 默认为 false，如需使用 css modules 功能，则设为 true
				},
			},
		},
	}
	if (process.env.NODE_ENV === 'development') {
		// 本地开发构建配置（不混淆压缩）
		return merge({}, baseConfig, devConfig)
	}
	// 生产构建配置（默认开启压缩混淆等）
	return merge({}, baseConfig, prodConfig)
})
